
package Model;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;


@Entity
@Table(name = "venda")
public class Venda implements Serializable {

   @Id
   @Column(name = "cod_venda", insertable = false)
   private int codVenda;

   @OneToOne(fetch = FetchType.LAZY, cascade=javax.persistence.CascadeType.MERGE)
   @JoinColumn(name = "cod_venda")
   @Fetch(FetchMode.SELECT)
   private ItemPedidoAssociado itemPedidoAssociado;


   @Column(name = "quantidade")
   private double quantidadeVendida;

   @Column(name = "data_venda")
   @Temporal(javax.persistence.TemporalType.DATE)
   private Date dataVenda;

   @Column(name = "peso_caixa")
   private double pesoCaixa;

   @Column(name = "comissao")
   private double comissao;

   @Column (name = "comissao_total")
   private double comissaoTotal;

   @Column (name = "valor_venda")
   private double valorTotal;

   @Column (name = "valor_venda_total")
   private double valorTotalVenda;
   
   @Transient
   private int quantidadeCaixas;

   public Venda() {
      quantidadeVendida = 0.00;
      dataVenda = new Date();
      pesoCaixa = 0.00;
      comissao = 0.00;
      valorTotal = 0.00;
   }

   public int getQuantidadeCaixas() {
     
      if(getQuantidadeVendida()!=0.00 &&getPesoCaixa()!=0.00){
         quantidadeCaixas = (int)(getQuantidadeVendida() / getPesoCaixa());
      }
      return quantidadeCaixas;
   }

   public void setQuantidadeCaixas(int quantidadeCaixas) {
      this.quantidadeCaixas = quantidadeCaixas;
   }
   
   public void setItemAssociado(ItemPedidoAssociado itemPedidoAssociado){
        setQuantidadeVendida(itemPedidoAssociado.getQuantidade());
        setPesoCaixa(itemPedidoAssociado.getItemPedidoEmpresa().getPesoCaixa());
        setComissao((double) itemPedidoAssociado.getComissao());
        setQuantidadeCaixas((int) itemPedidoAssociado.getQuantidadeCaixa());
   }

    public int getCodVenda() {
        return codVenda;
    }
    public void setCodVenda(int codVenda) {
        this.codVenda = codVenda;
    }

    public ItemPedidoAssociado getItemPedidoAssociado() {
        return itemPedidoAssociado;
    }

    public void setItemPedidoAssociado(ItemPedidoAssociado itemPedidoAssociado) {
        this.itemPedidoAssociado = itemPedidoAssociado;
    }

    

        
   
    public double getQuantidadeVendida() {
        return quantidadeVendida;
    }

    public void setQuantidadeVendida(double quantidadeVendida) {
        this.quantidadeVendida = quantidadeVendida;
    }

    public Date getDataVenda() {
        return dataVenda;
    }

    public void setDataVenda(Date dataVenda) {
        this.dataVenda = dataVenda;
    }

    public double getPesoCaixa() {
        return pesoCaixa;
    }

    public void setPesoCaixa(double pesoCaixa) {
        this.pesoCaixa = pesoCaixa;
    }
    public double getComissao() {
        return comissao;
    }
    public void setComissao(double comissao) {
        this.comissao = comissao;
    }
    public double getComissaoTotal() {
        return comissaoTotal;
    }

    public void setComissaoTotal(double comissaoTotal) {
        this.comissaoTotal = comissaoTotal;
    }
    public double getValorTotal() {
        return valorTotal;
    }

    public void setValorTotal(double valorTotal) {
        this.valorTotal = valorTotal;
    }

    public double getValorTotalVenda() {
        return valorTotalVenda;
    }
    public void setValorTotalVenda(double valorTotalVenda) {
        this.valorTotalVenda = valorTotalVenda;
    }

}
